home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
GFA basic training.adf
/
Copper
/
USER_COPPER II+EVERY.LST
< prev
next >
Wrap
File List
|
1989-06-01
|
4KB
|
170 lines
' User-Copper Variation mit der Anweisung EVERY
'
'
@copper_init
EVERY 400 GOSUB verÄndern
'
REPEAT
PRINT "Bunt nicht?",
UNTIL MOUSEK
'
@user_copper_aus
EDIT
'
> PROCEDURE datas
DATA $0180,$0000
DATA $7701,$fffe
DATA $0180,$0f00
DATA $7801,$fffe
DATA $0180,$0f10
DATA $7901,$fffe
DATA $0180,$0f20
DATA $7a01,$fffe
DATA $0180,$0f40
DATA $7b01,$fffe
DATA $0180,$0f60
DATA $7c01,$fffe
DATA $0180,$0f70
DATA $7d01,$fffe
DATA $0180,$0f80
DATA $7e01,$fffe
DATA $0180,$0f90
DATA $7f01,$fffe
DATA $0180,$0fa0
DATA $8001,$fffe
DATA $0180,$0fb0
DATA $8101,$fffe
DATA $0180,$0fc0
DATA $8201,$fffe
DATA $0180,$0fd0
DATA $8301,$fffe
DATA $0180,$0fe0
DATA $8401,$fffe
DATA $0180,$0ff0
DATA $8501,$fffe
DATA $0180,$0ff1
DATA $8601,$fffe
DATA $0180,$0ff2
DATA $8701,$fffe
DATA $0180,$0ff3
DATA $8801,$fffe
DATA $0180,$0ff4
DATA $8901,$fffe
DATA $0180,$0ff5
DATA $8a01,$fffe
DATA $0180,$0ef5
DATA $8b01,$fffe
DATA $0180,$0df5
DATA $8c01,$fffe
DATA $0180,$0cf5
DATA $8d01,$fffe
DATA $0180,$0bf4
DATA $8e01,$fffe
DATA $0180,$0af3
DATA $8f01,$fffe
DATA $0180,$09f2
DATA $9001,$fffe
DATA $0180,$08f1
DATA $9101,$fffe
DATA $0180,$07f2
DATA $9201,$fffe
DATA $0180,$06e3
DATA $9301,$fffe
DATA $0180,$06d3
DATA $9401,$fffe
DATA $0180,$06c3
DATA $9501,$fffe
DATA $0180,$06b3
DATA $9601,$fffe
DATA $0180,$06a3
DATA $9801,$fffe
DATA $0180,$0693
DATA $9901,$fffe
DATA $0180,$0683
DATA $9a01,$fffe
DATA $0180,$0673
DATA $9b01,$fffe
DATA $0180,$0664
DATA $9c01,$fffe
DATA $0180,$0655
DATA $9d01,$fffe
DATA $0180,$0555
DATA $9e01,$fffe
DATA $0180,$0546
DATA $9f01,$fffe
DATA $0180,$0
DATA $ffff
RETURN
> PROCEDURE usercop_lÄnge
DO
READ x%
EXIT IF x%=&HFFFF
INC anz& ! Anz Worte
LOOP
MUL anz&,2 ! Anz Bytes
RESTORE
RETURN
> PROCEDURE user_copper_an
VSYNC ! Warten auf Vblank, damit Copper nicht ausliest
LONG{_GfxBase+50}=(u_copadr%) ! (Unsere) Adresse in den Auto-Vector schreiben
RETURN
> PROCEDURE user_copper_aus
VSYNC ! Warten, damit Copper nicht stoert
LONG{_GfxBase+50}=(altcop%) ! Vector zurueckschreiben (Alte Datenliste)
x%=MFREE(u_copadr%,mem&) ! User-Coplistspeicher Frei!
RETURN
> PROCEDURE memory_copperbereit
mem&=76+anz& ! 76 Bytes werden noch vom System uebernommen
u_copadr%=MALLOC(mem&,2) ! Chipmemory belegen in errechneter groesse
neu_copadr%=u_copadr% ! Zweimal speichern (Zaehler und Uebergabe)
'
altcop%=LPEEK(_GfxBase+50) ! Copper-Automatik-Vector relativ zu GFXBASE retten
startcop%=altcop%+84 ! Anfang der Daten die uebernommen werden muessen
' Startliste des Systems Kopieren
BMOVE startcop%,neu_copadr%,60
' Unsere Liste
CLR zeiger&,x%
RESTORE
' Unseren Adress-Zeiger erhoehen
ADD neu_copadr%,60 ! 60 sind schon drin, darum um 60 erhoehen
'
counter_oben%=neu_copadr%+4 ! Oberen Zeiger auf Bewegungs-Position setzen.
' = Erster Copper WAIT
DO
READ x%
EXIT IF x%=&HFFFF
DPOKE neu_copadr%+zeiger&,x%
ADD zeiger&,2
LOOP
' End Liste des Systems Kopieren
ADD startcop%,60
ADD neu_copadr%,anz&
counter_unten%=neu_copadr%-8 ! Unteren Zeiger auf zweite Bewegungsposition
' setzen.= Letzter Copper-Wait
BMOVE startcop%,neu_copadr%,16
RETURN
> PROCEDURE ab_verÄndern
' Zaehler = Anfangsadresse der Farbliste
FOR i|=0 TO 42
VSYNC
CARD{counter_oben%}=(&H7501+i|*&H100)
CARD{counter_unten%}=(&H9F01+i|*&H100)
NEXT i|
RETURN
> PROCEDURE auf_verÄndern
FOR i|=42 DOWNTO 0
VSYNC
CARD{counter_oben%}=(&H7501+i|*&H100)
CARD{counter_unten%}=(&H9F01+i|*&H100)
NEXT i|
RETURN
PROCEDURE copper_init
@usercop_lÄnge
@memory_copperbereit
@user_copper_an
RETURN
PROCEDURE verÄndern
@ab_verÄndern
@auf_verÄndern
RETURN